#ifndef COMBOBOXDELEGATE_H
#define COMBOBOXDELEGATE_H

#include <QItemDelegate>
#include <QComboBox>
#include <QAbstractItemModel>
#include <QStringList>

class ComboBoxDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    // 构造函数：允许直接传入选项列表或通过模型动态生成选项
    explicit ComboBoxDelegate(const QStringList &items, QObject *parent = nullptr, QAbstractItemModel *model = nullptr, int referenceColumn = -1);

    // 创建编辑器
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;

    // 设置编辑器的初始数据
    void setEditorData(QWidget *editor, const QModelIndex &index) const override;

    // 将编辑器中的数据保存到模型
    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;

private:
    QAbstractItemModel *m_model;   // 用于动态生成选项的模型
    int m_referenceColumn;         // 指定用于生成选项的列索引
    QStringList m_items;  // 存储下拉框的选项
};

#endif // COMBOBOXDELEGATE_H
